package course.examples.DataManagement.PreferenceFragment; import android.app.Activity; import android.content.SharedPreferences; import android.content.SharedPreferences.OnSharedPreferenceChangeListener; import android.os.Bundle; import android.preference.Preference; import android.preference.PreferenceFragment; public class ViewAndUpdatePreferencesActivity extends Activity { private static final String USERNAME = "uname"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.user_prefs_fragment); } // Fragment that displays the username preference public static class UserPreferenceFragment extends PreferenceFragment { protected static final String TAG = "UserPrefsFragment"; private OnSharedPreferenceChangeListener mListener; private Preference mUserNamePreference; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Load the preferences from an XML resource addPreferencesFromResource(R.xml.user_prefs); // Get the username Preference mUserNamePreference = (Preference) getPreferenceManager() .findPreference(USERNAME); // Attach a listener to update summary when username changes mListener = new OnSharedPreferenceChangeListener() { @Override public void onSharedPreferenceChanged( SharedPreferences sharedPreferences, String key) { mUserNamePreference.setSummary(sharedPreferences.getString( USERNAME, "None Set")); } }; // Get SharedPreferences object managed by the PreferenceManager for // this Fragment SharedPreferences prefs = getPreferenceManager() .getSharedPreferences(); // Register a listener on the SharedPreferences object prefs.registerOnSharedPreferenceChangeListener(mListener); // Invoke callback manually to display the current username mListener.onSharedPreferenceChanged(prefs, USERNAME); } } }